﻿#ifndef GENERATEREPORT_CENTERWIDGET_H
#define GENERATEREPORT_CENTERWIDGET_H

#include "T_BasePage.h"
#include "GlobalEnums.h"
#include <QMap>

class ElaTabWidget;
class ElaTreeView;
class ElaTableView;
class QLabel;
namespace GenerateReport
{
    class RealTimeMonitor;
    class T_CloseReportWarningWidget;
}
namespace GenerateReport
{
    /// @brief 中心视图
    class CenterWidget : public T_BasePage
    {
        Q_OBJECT
    public:
        Q_INVOKABLE explicit CenterWidget(QWidget* parent = nullptr);
        ~CenterWidget();

        void addReportRelatedSubWidget(GenerateReport::ReportRelatedSubWidgetType type, QPair<qint64, qint64> indexPair, QString reportName);
        void closeCurrentReportWidget();

    private slots:
        void on_tabWidget_tabCloseRequested(int index);
        void on_tabView_doMouseTrackTip(const QModelIndex&);
        void on_tableView_doubleClicked(const QModelIndex&);

    private:
        /// @brief 更新报告记录列表内容
        void UpdateReportRecordContent();

    private:

        QLabel* m_noDataDisplayPage{ nullptr };
        /// @brief 报告列表子窗口
        ElaTableView* m_tableView{ nullptr };
        /// @brief 中心窗口
        ElaTabWidget* m_tabWidget{ nullptr };
        /// @brief 报告子窗口
        QWidget* m_widget = Q_NULLPTR;

        QMap<int ,qint64> m_docWidgetMap; //文档对应的窗体map<qwidgetIndex,窗口ID>

        T_CloseReportWarningWidget* m_closeReportWarningWidget{ nullptr };

        /// @brief 自动定时保存文档定时器
        RealTimeMonitor* _monitor{};
    };

#endif // T_NAVIGATION_H
}
